package cn.wolfcode.qo;

import lombok.*;

import java.util.List;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class PageResult<T> {

    //  当前页
    private int currentPage;
    //  每页显示的最大记录数
    private int pageSize;

    //  总条数
    private int totalCount;
    //  每页显示的数据
    private List<T> data;

    //  总页数
    private int totalPage;
    //  上一页
    private int prevPage;
    //  下一页
    private int nextPage;


    public PageResult(int currentPage, int pageSize, int totalCount, List<T> data) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalCount = totalCount;
        this.data = data;

        //  判断总条数是否小于等于每页显示的最大记录数
        if (totalCount <= pageSize) {
            this.totalPage = 1;
            this.prevPage = 1;
            this.nextPage = 1;
            return;
        }

        //  计算总页数
        this.totalPage = this.totalCount % this.pageSize == 0 ?
                this.totalCount / this.pageSize : this.totalCount / this.pageSize + 1;
        //  计算上一页
        this.prevPage = this.currentPage - 1 <= 1 ?
                1 : this.currentPage - 1;
        //  计算下一页
        this.nextPage = this.currentPage + 1 >= this.totalPage ?
                this.totalPage : this.currentPage + 1;
    }
}
